using dnAnalytics.Math;
using NUnit.Framework;

namespace dnAnalytics.Tests.Math
{
    [TestFixture]
    public class ComplexMath_MultiplyTest
    {
        [Test]
        public void Multiply()
        {
            Complex a = new Complex(1.19209289550780998537e-7, 1.19209289550780998537e-7);
            Complex b = new Complex(1.19209289550780998537e-7, 1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(0.0, 2.8421709430403887528e-14), 15);
            a = new Complex(0.0, 1.19209289550780998537e-7);
            b = new Complex(0.0, -1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.4210854715201943764e-14, 0.0), 15);
            a = new Complex(0.0, -1.19209289550780998537e-7);
            b = new Complex(0.0, 5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(5.96046447753904992685e-8, 0.0), 15);
            a = new Complex(0.0, 5.0e-1);
            b = new Complex(0.0, -5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(2.5e-1, 0.0), 15);
            a = new Complex(0.0, -5.0e-1);
            b = new Complex(0.0, 1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(5.0e-1, 0.0), 15);
            a = new Complex(0.0, 1.0);
            b = new Complex(0.0, -1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.0, 0.0), 15);
            a = new Complex(0.0, -1.0);
            b = new Complex(0.0, 2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(2.0, 0.0), 15);
            a = new Complex(0.0, 2.0);
            b = new Complex(0.0, -2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(4.0, 0.0), 15);
            a = new Complex(0.0, -2.0);
            b = new Complex(0.0, 8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.6777216e7, 0.0), 15);
            a = new Complex(0.0, 8.388608e6);
            b = new Complex(0.0, -8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177664e13, 0.0), 15);
            a = new Complex(0.0, -8.388608e6);
            b = new Complex(1.19209289550780998537e-7, 0.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(0.0, -9.99999999999997890576e-1), 15);
            a = new Complex(1.19209289550780998537e-7, 0.0);
            b = new Complex(-1.19209289550780998537e-7, 0.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-1.4210854715201943764e-14, 0.0), 15);
            a = new Complex(-1.19209289550780998537e-7, 0.0);
            b = new Complex(1.19209289550780998537e-7, 1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(-1.4210854715201943764e-14, -1.4210854715201943764e-14), 15);
            a = new Complex(1.19209289550780998537e-7, 1.19209289550780998537e-7);
            b = new Complex(1.19209289550780998537e-7, -1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(2.8421709430403887528e-14, 0.0), 15);
            a = new Complex(1.19209289550780998537e-7, -1.19209289550780998537e-7);
            b = new Complex(-1.19209289550780998537e-7, 1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(0.0, 2.8421709430403887528e-14), 15);
            a = new Complex(-1.19209289550780998537e-7, 1.19209289550780998537e-7);
            b = new Complex(-1.19209289550780998537e-7, -1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(2.8421709430403887528e-14, 0.0), 15);
            a = new Complex(-1.19209289550780998537e-7, -1.19209289550780998537e-7);
            b = new Complex(1.19209289550780998537e-7, 5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(5.96046305645357840666e-8, -5.96046589862452144705e-8), 15);
            a = new Complex(1.19209289550780998537e-7, 5.0e-1);
            b = new Complex(1.19209289550780998537e-7, -5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(2.50000000000014210855e-1, 0.0), 15);
            a = new Complex(1.19209289550780998537e-7, -5.0e-1);
            b = new Complex(-1.19209289550780998537e-7, 5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(2.49999999999985789145e-1, 1.19209289550780998537e-7), 15);
            a = new Complex(-1.19209289550780998537e-7, 5.0e-1);
            b = new Complex(-1.19209289550780998537e-7, -5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(2.50000000000014210855e-1, 0.0), 15);
            a = new Complex(-1.19209289550780998537e-7, -5.0e-1);
            b = new Complex(1.19209289550780998537e-7, 1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(4.99999999999985789145e-1, -1.78813934326171497806e-7), 15);
            a = new Complex(1.19209289550780998537e-7, 1.0);
            b = new Complex(1.19209289550780998537e-7, -1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.00000000000001421085, 0.0), 15);
            a = new Complex(1.19209289550780998537e-7, -1.0);
            b = new Complex(-1.19209289550780998537e-7, 1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(9.99999999999985789145e-1, 2.38418579101561997074e-7), 15);
            a = new Complex(-1.19209289550780998537e-7, 1.0);
            b = new Complex(-1.19209289550780998537e-7, -1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.00000000000001421085, 0.0), 15);
            a = new Complex(-1.19209289550780998537e-7, -1.0);
            b = new Complex(1.19209289550780998537e-7, 2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.99999999999998578915, -3.57627868652342995611e-7), 15);
            a = new Complex(1.19209289550780998537e-7, 2.0);
            b = new Complex(1.19209289550780998537e-7, -2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(4.00000000000001421085, 0.0), 15);
            a = new Complex(1.19209289550780998537e-7, -2.0);
            b = new Complex(-1.19209289550780998537e-7, 2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(3.99999999999998578915, 4.76837158203123994148e-7), 15);
            a = new Complex(-1.19209289550780998537e-7, 2.0);
            b = new Complex(-1.19209289550780998537e-7, -2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(4.00000000000001421085, 0.0), 15);
            a = new Complex(-1.19209289550780998537e-7, -2.0);
            b = new Complex(1.19209289550780998537e-7, 8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.6777216e7, -1.00000023841857699214), 15);
            a = new Complex(1.19209289550780998537e-7, 8.388608e6);
            b = new Complex(1.19209289550780998537e-7, -8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177664e13, 0.0), 15);
            a = new Complex(1.19209289550780998537e-7, -8.388608e6);
            b = new Complex(-1.19209289550780998537e-7, 8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177664e13, 1.99999999999999578115), 15);
            a = new Complex(-1.19209289550780998537e-7, 8.388608e6);
            b = new Complex(-1.19209289550780998537e-7, -8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177664e13, 0.0), 15);
            a = new Complex(-1.19209289550780998537e-7, -8.388608e6);
            b = new Complex(5.0e-1, 0.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-5.96046447753904992685e-8, -4.194304e6), 15);
            a = new Complex(5.0e-1, 0.0);
            b = new Complex(-5.0e-1, 0.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-2.5e-1, 0.0), 15);
            a = new Complex(-5.0e-1, 0.0);
            b = new Complex(5.0e-1, 1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(-2.5e-1, -5.96046447753904992685e-8), 15);
            a = new Complex(5.0e-1, 1.19209289550780998537e-7);
            b = new Complex(5.0e-1, -1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(2.50000000000014210855e-1, 0.0), 15);
            a = new Complex(5.0e-1, -1.19209289550780998537e-7);
            b = new Complex(-5.0e-1, 1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(-2.49999999999985789145e-1, 1.19209289550780998537e-7), 15);
            a = new Complex(-5.0e-1, 1.19209289550780998537e-7);
            b = new Complex(-5.0e-1, -1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(2.50000000000014210855e-1, 0.0), 15);
            a = new Complex(-5.0e-1, -1.19209289550780998537e-7);
            b = new Complex(5.0e-1, 5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(-2.4999994039535522461e-1, -2.5000005960464477539e-1), 15);
            a = new Complex(5.0e-1, 5.0e-1);
            b = new Complex(5.0e-1, -5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(5.0e-1, 0.0), 15);
            a = new Complex(5.0e-1, -5.0e-1);
            b = new Complex(-5.0e-1, 5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(0.0, 5.0e-1), 15);
            a = new Complex(-5.0e-1, 5.0e-1);
            b = new Complex(-5.0e-1, -5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(5.0e-1, 0.0), 15);
            a = new Complex(-5.0e-1, -5.0e-1);
            b = new Complex(5.0e-1, 1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(2.5e-1, -7.5e-1), 15);
            a = new Complex(5.0e-1, 1.0);
            b = new Complex(5.0e-1, -1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.25, 0.0), 15);
            a = new Complex(5.0e-1, -1.0);
            b = new Complex(-5.0e-1, 1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.5e-1, 1.0), 15);
            a = new Complex(-5.0e-1, 1.0);
            b = new Complex(-5.0e-1, -1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.25, 0.0), 15);
            a = new Complex(-5.0e-1, -1.0);
            b = new Complex(5.0e-1, 2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.75, -1.5), 15);
            a = new Complex(5.0e-1, 2.0);
            b = new Complex(5.0e-1, -2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(4.25, 0.0), 15);
            a = new Complex(5.0e-1, -2.0);
            b = new Complex(-5.0e-1, 2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(3.75, 2.0), 15);
            a = new Complex(-5.0e-1, 2.0);
            b = new Complex(-5.0e-1, -2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(4.25, 0.0), 15);
            a = new Complex(-5.0e-1, -2.0);
            b = new Complex(5.0e-1, 8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.677721575e7, -4.194305e6), 15);
            a = new Complex(5.0e-1, 8.388608e6);
            b = new Complex(5.0e-1, -8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.036874417766425e13, 0.0), 15);
            a = new Complex(5.0e-1, -8.388608e6);
            b = new Complex(-5.0e-1, 8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.036874417766375e13, 8.388608e6), 15);
            a = new Complex(-5.0e-1, 8.388608e6);
            b = new Complex(-5.0e-1, -8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.036874417766425e13, 0.0), 15);
            a = new Complex(-5.0e-1, -8.388608e6);
            b = new Complex(1.0, 0.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-5.0e-1, -8.388608e6), 15);
            a = new Complex(1.0, 0.0);
            b = new Complex(-1.0, 0.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-1.0, 0.0), 15);
            a = new Complex(-1.0, 0.0);
            b = new Complex(1.0, 1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(-1.0, -1.19209289550780998537e-7), 15);
            a = new Complex(1.0, 1.19209289550780998537e-7);
            b = new Complex(1.0, -1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.00000000000001421085, 0.0), 15);
            a = new Complex(1.0, -1.19209289550780998537e-7);
            b = new Complex(-1.0, 1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(-9.99999999999985789145e-1, 2.38418579101561997074e-7), 15);
            a = new Complex(-1.0, 1.19209289550780998537e-7);
            b = new Complex(-1.0, -1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.00000000000001421085, 0.0), 15);
            a = new Complex(-1.0, -1.19209289550780998537e-7);
            b = new Complex(1.0, 5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(-9.9999994039535522461e-1, -5.00000119209289550781e-1), 15);
            a = new Complex(1.0, 5.0e-1);
            b = new Complex(1.0, -5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.25, 0.0), 15);
            a = new Complex(1.0, -5.0e-1);
            b = new Complex(-1.0, 5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(-7.5e-1, 1.0), 15);
            a = new Complex(-1.0, 5.0e-1);
            b = new Complex(-1.0, -5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.25, 0.0), 15);
            a = new Complex(-1.0, -5.0e-1);
            b = new Complex(1.0, 1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-5.0e-1, -1.5), 15);
            a = new Complex(1.0, 1.0);
            b = new Complex(1.0, -1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(2.0, 0.0), 15);
            a = new Complex(1.0, -1.0);
            b = new Complex(-1.0, 1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(0.0, 2.0), 15);
            a = new Complex(-1.0, 1.0);
            b = new Complex(-1.0, -1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(2.0, 0.0), 15);
            a = new Complex(-1.0, -1.0);
            b = new Complex(1.0, 2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.0, -3.0), 15);
            a = new Complex(1.0, 2.0);
            b = new Complex(1.0, -2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(5.0, 0.0), 15);
            a = new Complex(1.0, -2.0);
            b = new Complex(-1.0, 2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(3.0, 4.0), 15);
            a = new Complex(-1.0, 2.0);
            b = new Complex(-1.0, -2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(5.0, 0.0), 15);
            a = new Complex(-1.0, -2.0);
            b = new Complex(1.0, 8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.6777215e7, -8.38861e6), 15);
            a = new Complex(1.0, 8.388608e6);
            b = new Complex(1.0, -8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177665e13, 0.0), 15);
            a = new Complex(1.0, -8.388608e6);
            b = new Complex(-1.0, 8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177663e13, 1.6777216e7), 15);
            a = new Complex(-1.0, 8.388608e6);
            b = new Complex(-1.0, -8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177665e13, 0.0), 15);
            a = new Complex(-1.0, -8.388608e6);
            b = new Complex(2.0, 0.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-2.0, -1.6777216e7), 15);
            a = new Complex(2.0, 0.0);
            b = new Complex(-2.0, 0.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-4.0, 0.0), 15);
            a = new Complex(-2.0, 0.0);
            b = new Complex(2.0, 1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(-4.0, -2.38418579101561997074e-7), 15);
            a = new Complex(2.0, 1.19209289550780998537e-7);
            b = new Complex(2.0, -1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(4.00000000000001421085, 0.0), 15);
            a = new Complex(2.0, -1.19209289550780998537e-7);
            b = new Complex(-2.0, 1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(-3.99999999999998578915, 4.76837158203123994148e-7), 15);
            a = new Complex(-2.0, 1.19209289550780998537e-7);
            b = new Complex(-2.0, -1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(4.00000000000001421085, 0.0), 15);
            a = new Complex(-2.0, -1.19209289550780998537e-7);
            b = new Complex(2.0, 5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(-3.99999994039535522461, -1.00000023841857910156), 15);
            a = new Complex(2.0, 5.0e-1);
            b = new Complex(2.0, -5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(4.25, 0.0), 15);
            a = new Complex(2.0, -5.0e-1);
            b = new Complex(-2.0, 5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(-3.75, 2.0), 15);
            a = new Complex(-2.0, 5.0e-1);
            b = new Complex(-2.0, -5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(4.25, 0.0), 15);
            a = new Complex(-2.0, -5.0e-1);
            b = new Complex(2.0, 1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-3.5, -3.0), 15);
            a = new Complex(2.0, 1.0);
            b = new Complex(2.0, -1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(5.0, 0.0), 15);
            a = new Complex(2.0, -1.0);
            b = new Complex(-2.0, 1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-3.0, 4.0), 15);
            a = new Complex(-2.0, 1.0);
            b = new Complex(-2.0, -1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(5.0, 0.0), 15);
            a = new Complex(-2.0, -1.0);
            b = new Complex(2.0, 2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-2.0, -6.0), 15);
            a = new Complex(2.0, 2.0);
            b = new Complex(2.0, -2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(8.0, 0.0), 15);
            a = new Complex(2.0, -2.0);
            b = new Complex(-2.0, 2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(0.0, 8.0), 15);
            a = new Complex(-2.0, 2.0);
            b = new Complex(-2.0, -2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(8.0, 0.0), 15);
            a = new Complex(-2.0, -2.0);
            b = new Complex(2.0, 8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.6777212e7, -1.677722e7), 15);
            a = new Complex(2.0, 8.388608e6);
            b = new Complex(2.0, -8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177668e13, 0.0), 15);
            a = new Complex(2.0, -8.388608e6);
            b = new Complex(-2.0, 8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.036874417766e13, 3.3554432e7), 15);
            a = new Complex(-2.0, 8.388608e6);
            b = new Complex(-2.0, -8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177668e13, 0.0), 15);
            a = new Complex(-2.0, -8.388608e6);
            b = new Complex(8.388608e6, 0.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-1.6777216e7, -7.0368744177664e13), 15);
            a = new Complex(8.388608e6, 0.0);
            b = new Complex(-8.388608e6, 0.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-7.0368744177664e13, 0.0), 15);
            a = new Complex(-8.388608e6, 0.0);
            b = new Complex(8.388608e6, 1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(-7.0368744177664e13, -9.99999999999997890576e-1), 15);
            a = new Complex(8.388608e6, 1.19209289550780998537e-7);
            b = new Complex(8.388608e6, -1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177664e13, 0.0), 15);
            a = new Complex(8.388608e6, -1.19209289550780998537e-7);
            b = new Complex(-8.388608e6, 1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(-7.0368744177664e13, 1.99999999999999578115), 15);
            a = new Complex(-8.388608e6, 1.19209289550780998537e-7);
            b = new Complex(-8.388608e6, -1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177664e13, 0.0), 15);
            a = new Complex(-8.388608e6, -1.19209289550780998537e-7);
            b = new Complex(8.388608e6, 5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(-7.03687441776639999999e13, -4.194305e6), 15);
            a = new Complex(8.388608e6, 5.0e-1);
            b = new Complex(8.388608e6, -5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.036874417766425e13, 0.0), 15);
            a = new Complex(8.388608e6, -5.0e-1);
            b = new Complex(-8.388608e6, 5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(-7.036874417766375e13, 8.388608e6), 15);
            a = new Complex(-8.388608e6, 5.0e-1);
            b = new Complex(-8.388608e6, -5.0e-1);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.036874417766425e13, 0.0), 15);
            a = new Complex(-8.388608e6, -5.0e-1);
            b = new Complex(8.388608e6, 1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-7.03687441776635e13, -1.2582912e7), 15);
            a = new Complex(8.388608e6, 1.0);
            b = new Complex(8.388608e6, -1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177665e13, 0.0), 15);
            a = new Complex(8.388608e6, -1.0);
            b = new Complex(-8.388608e6, 1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-7.0368744177663e13, 1.6777216e7), 15);
            a = new Complex(-8.388608e6, 1.0);
            b = new Complex(-8.388608e6, -1.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177665e13, 0.0), 15);
            a = new Complex(-8.388608e6, -1.0);
            b = new Complex(8.388608e6, 2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-7.0368744177662e13, -2.5165824e7), 15);
            a = new Complex(8.388608e6, 2.0);
            b = new Complex(8.388608e6, -2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177668e13, 0.0), 15);
            a = new Complex(8.388608e6, -2.0);
            b = new Complex(-8.388608e6, 2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(-7.036874417766e13, 3.3554432e7), 15);
            a = new Complex(-8.388608e6, 2.0);
            b = new Complex(-8.388608e6, -2.0);
            TestHelper.TestSignificantDigits(a*b, new Complex(7.0368744177668e13, 0.0), 15);
            a = new Complex(-8.388608e6, -2.0);
            b = new Complex(8.388608e6, 8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(-7.0368727400448e13, -7.036876095488e13), 15);
            a = new Complex(8.388608e6, 8.388608e6);
            b = new Complex(8.388608e6, -8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.40737488355328e14, 0.0), 15);
            a = new Complex(8.388608e6, -8.388608e6);
            b = new Complex(-8.388608e6, 8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(0.0, 1.40737488355328e14), 15);
            a = new Complex(-8.388608e6, 8.388608e6);
            b = new Complex(-8.388608e6, -8.388608e6);
            TestHelper.TestSignificantDigits(a*b, new Complex(1.40737488355328e14, 0.0), 15);
            a = new Complex(-8.388608e6, -8.388608e6);
            b = new Complex(0.0, 1.19209289550780998537e-7);
            TestHelper.TestSignificantDigits(a*b, new Complex(9.99999999999997890576e-1, -9.99999999999997890576e-1), 15);
        }
    }
}